package com.uobgroup.ews.uam.core.service;

import java.util.List;

import com.uobgroup.ews.uam.core.domain.ReferenceType;


public interface ReferenceTypeService {
   
   public abstract ReferenceType findReferenceType(Long id);
   
   public abstract ReferenceType findReferenceTypeByIdAndSecurityScope(Long id);
   
   public abstract ReferenceType findReferenceTypeByIdAndApplicationScope(Long id);
   
   public abstract void deleteReferenceType(ReferenceType referenceType);
   
   public abstract void saveReferenceType(ReferenceType referenceType);

   public abstract ReferenceType updateReferenceType(ReferenceType referenceType);

   public ReferenceType findReferenceTypeByCodeAndSecurityScope(String code);
   
   public ReferenceType findReferenceTypeByCodeAndApplicationScope(String code);
   
   public ReferenceType findReferenceTypeByNameAndSecurityScope(String name);
   
   public ReferenceType findReferenceTypeByNameAndApplicationScope(String name);
   
   public ReferenceType findReferenceTypeByName(String name);
   
   public ReferenceType findReferenceTypeByCode(String code);
   
   public ReferenceType findReferenceTypeThatHasNameAndNotHasId(String name, Long id);
   
   public ReferenceType findReferenceTypeThatHasCodeAndNotHasId(String code, Long id);
   
   public long countReferenceTypesByApplicationScope();
   
   public long countReferenceTypesBySecurityScope();
   
   public List<ReferenceType> findReferenceTypesBySecurityScope();
   
   public List<ReferenceType> findReferenceTypesByApplicationScope();
   
   public List<ReferenceType> findReferenceTypesBySecurityScope(int firstResult, int maxResults);
   
   public List<ReferenceType> findReferenceTypesByApplicationScope(int firstResult, int maxResults);
   
}
